#使用的编译器

CC = sdcc
FLASH = stcgal

TARGET ?= $(notdir $(shell pwd))

BUILD_DIR = build
SRC_DIR = src

SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(patsubst %.c,%.rel,$(SRCS))
RELS = $(patsubst $(SRC_DIR)%,$(BUILD_DIR)%,$(OBJS))

all : $(TARGET).hex

$(BUILD_DIR)/%.rel : $(SRC_DIR)/%.c
	@echo '--- compile ---'
	mkdir -p $(BUILD_DIR)
	$(CC) -mmcs51 --model-small  --opt-code-speed -c $< -o $@

$(BUILD_DIR)/$(TARGET).ihx : $(RELS)
	@echo '--- link ---'
	$(CC) -mmcs51 --model-small  --opt-code-speed    --xram-size 256 --iram-size 256 --code-size 8192 --out-fmt-ihx $^ -o $@

$(TARGET).hex : $(BUILD_DIR)/$(TARGET).ihx
	@echo '--- generate hex ---'
	packihx $< > $@

flash : $(TARGET).hex
	@echo --- flash ---
	$(FLASH) -P stc89 $<

.PHONY : clean cleanall com
cleanall :
	rm -f *.hex
	rm -f $(BUILD_DIR)/*.rel
	rm -f $(BUILD_DIR)/*.rst
	rm -f $(BUILD_DIR)/*.sym
	rm -f $(BUILD_DIR)/*.mem
	rm -f $(BUILD_DIR)/*.map
	rm -f $(BUILD_DIR)/*.lst
	rm -f $(BUILD_DIR)/*.lk
	rm -f $(BUILD_DIR)/*.ihx
	rm -f $(BUILD_DIR)/*.asm
	
clean :
	rm -f $(BUILD_DIR)/*.rel
	rm -f $(BUILD_DIR)/*.rst
	rm -f $(BUILD_DIR)/*.sym
	rm -f $(BUILD_DIR)/*.mem
	rm -f $(BUILD_DIR)/*.map
	rm -f $(BUILD_DIR)/*.lst
	rm -f $(BUILD_DIR)/*.lk
	rm -f $(BUILD_DIR)/*.ihx
	rm -f $(BUILD_DIR)/*.asm

com : 
	minicom -D /dev/ttyUSB0 -b 4800
